Dynamic link scaling based on bandwidth utilization

ABSTRACT

Systems and methods for reducing power consumption during data transport across multiple processors when link utilization is low. In a multi-node system, at least one of two nodes may indicate low utilization for a given link between them. In response to further determining no enabled link between the two nodes is over utilized, each of the two nodes may remove the given link from consideration for being scheduled to receive data for transfer and turn off the given link when no more transactions are scheduled for the given link. Disabled links may be re-enabled when high utilization is detected on at least one link between the two nodes.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to high performance computing network systems, and more particularly, to reducing power consumption during data transport across multiple processors when link utilization is low.

2. Description of the Relevant Art

The performance of computing systems is dependent on both hardware and software. In order to increase the throughput of computing systems, the parallelization of tasks is utilized as much as possible. To this end, compilers may extract parallelized tasks from program code and many modern processor core designs have deep pipelines configured to perform chip multi-threading (CMT). In hardware-level multi-threading, a simultaneous multi-threaded processor core executes hardware instructions from different software processes at the same time. In contrast, single-threaded processors operate on a single thread at a time.

In order to utilize the benefits of CMT on larger workloads, the computing system may be expanded from a single-socket system to a multi-socket system. For example, scientific computing clusters utilize multiple sockets. Each one of the multiple sockets includes a processor with one or more cores. The multiple sockets may be located on a single motherboard, which is also referred to as a printed circuit board. Alternatively, the multiple sockets may be located on multiple motherboards connected through a backplane in a server box, a desktop, a laptop, or other chassis.

In a symmetric multi-processing system, each of the processors shares one common store of memory. In contrast, each processor in a multi-socket computing system includes its own dedicated store of memory. In a multi-socket computing system, each processor is capable of accessing a memory store corresponding to another processor, transparent to the software programmer. A dedicated cache coherence link may be used between two processors within the multi-socket system for accessing data stored in caches or a dynamic random access memory (DRAM) of another processor. Systems with CMT use an appreciable amount of memory bandwidth. The dedicated cache coherence links in a multi-socket system provide near-linear scaling of performance with thread count.

The power consumption of modern integrated circuits (IC's) has become an increasing design issue with each generation of semiconductor chips. As power consumption increases, more costly cooling systems are utilized to remove excess heat and prevent IC failure. The IC power dissipation constraint is not only an issue for portable computers and mobile communication devices, but also for high-performance stationary computing systems. In order to manage power consumption, a chip-level power management system typically disables portions of the chip when experiencing no utilization for a given time period. Sleep modes and clock disabling are used in these portions. However, the multiple similar logic structures are not disabled if some of the structures experience utilization, even low utilization.

In view of the above, methods and mechanisms for reducing power consumption during data transport across multiple processors when utilization is low are desired.

SUMMARY OF THE INVENTION

Systems and methods for reducing power consumption during data transport across multiple processors when utilization is low are contemplated. In one embodiment, a computing system includes multiple processors, each located in a respective socket on a printed circuit board. Each processor includes one or more processor cores and one or more on-die caches arranged in a cache hierarchical subsystem. A processor within a socket is connected to a respective off-die memory, such as at least dynamic random access memory (DRAM). A processor within a socket and its respective off-die memory may be referred to as a node. A processor within a given node may have access to a most recently updated copy of data in the on-die caches and off-die memory of other nodes through one or more coherence links.

The links may be bidirectional links or unidirectional links. As used herein, when bidirectional links are used between the two nodes, a set of links, or a set, refers to a group of links between two nodes. When unidirectional links are used between the two nodes, a set of links, or a set, refers to a group of links between two nodes with a same direction of data transfer. Therefore, when bidirectional links are used, there is one set of links between the two nodes. When unidirectional links are used, there are two sets of links between the two nodes, each set corresponding to a given direction of data transfer. A first set may include the unidirectional links with an incoming data transfer direction with respect to a given node of the two nodes. A second set may include the unidirectional links with an outgoing data transfer direction with respect to the given node of the two nodes. If a mixture of bidirectional and unidirectional links are used between the two nodes, then there are two sets of links with an overlap, which includes the bidirectional links.

The hardware including the multiple nodes may be controlled by software. The software includes power management logic and a hypervisor. For a given link in a set of links between two nodes in the system, at least one of the two nodes may send an indication of low utilization for a given direction within the given link between them to control logic in the software. The indication may be a generated trap. Each trap may be generated in response to determining the given link is underutilized. For example, a bidirectional link has two directions. One or both directions within a given bidirectional link may be underutilized.

A thread, such as a trap handler, may be executed in response to the generated trap. When the trap handler executes, control logic within the software may send a notification for turning off the given link to each of the two nodes. The control logic may send this notification in response to receiving the indication of low utilization for the given link from at least one of the two nodes and determining no one of the enabled links in a set between the two nodes is over utilized. In response to receiving from the control logic the corresponding notification of disabling the given link, each of the two nodes may remove the given link from consideration for being scheduled to receive data for transfer. Additionally, each of the two nodes may turn off the given link, in response to detecting no more transactions are scheduled for the given link.

For another given link between any two nodes in the system, either of the two nodes may send an indication of high utilization for the given link between them to control logic in the software. The indication may be a generated trap. The trap may be generated in response to determining the given link is over utilized.

When a corresponding trap handler executes, control logic within the software may send a notification for turning on another link in the set of links between the two nodes to each of the two nodes. The other link may be a currently disabled link in the set. The other link may be able to handle the packet types that are currently causing the high utilization. The control logic may send the notification for turning on the other link in response to receiving the indication of high utilization for the given link in the set from at least one of the two nodes and determining the other link is disabled and handles packet types causing the high utilization. In response to receiving from the control logic the corresponding notification of enabling the other link, each of the two nodes may turn on the other link and add this other link for consideration for being scheduled to receive data for transfer, in response to further determining this other link has completed startup training.

These and other embodiments will become apparent upon reference to the following description and accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a generalized block diagram illustrating one embodiment of a computing system.

FIG. 2 is a generalized flow diagram illustrating one embodiment of a method for monitoring bandwidth utilization on coherence links in a multi-node system.

FIG. 3 is a generalized flow diagram illustrating one embodiment of a method for turning on and off links based on at least link bandwidth utilization.

FIG. 4 is a generalized block diagram illustrating another embodiment of a computing system.

FIG. 5 is a generalized block diagram of one embodiment of an exemplary processing node.

While the invention is susceptible to various modifications and alternative forms, specific embodiments are shown by way of example in the drawings and are herein described in detail. It should be understood, however, that drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the invention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth to provide a thorough understanding of the present invention. However, one having ordinary skill in the art should recognize that the invention may be practiced without these specific details. In some instances, well-known circuits, structures, signals, computer program instruction, and techniques have not been shown in detail to avoid obscuring the present invention.

A socket is an electrical and mechanical component on a printed circuit board. The socket may also be referred to as a central processing unit (CPU) socket. Without soldering, the socket connects the processor to other chips and buses on the printed circuit board. Sockets are typically used in desktop and server computers. In contrast, portable computing devices, such as laptops, use surface mount processors. Surface mount processors consume less space on a printed circuit board than a socket, but also need soldering.

Whether socket or surface mount technology is used, a computing system may include multiple processors located on one or more printed circuit boards. Each processor of the multiple processors is connected to a respective off-die memory. The respective off-die memory may include at least a dynamic random access memory (DRAM). Through the use of coherence links, each processor is connected to one or more other processors in the system, and has access to on-die caches and a respective off-die memory of the one or more other processors. Whether socket or surface mount technology is used, a processor and its respective off-die memory may be referred to as a node. A processor within a given node may have access to a most recently updated copy of data in the on-die caches and off-die memory of other nodes through one or more coherence links.

The processor within a node may include one or more general-purpose processor cores and one or more on-die caches arranged in a cache hierarchical subsystem. The general-purpose processor cores may execute instructions according to a given general-purpose instruction set. Alternatively, a processor within a node may include heterogeneous cores, such as one or more general-purpose cores and one or more application specific cores. The application specific cores may include a graphics processing unit (GPU), a digital signal processor (DSP), and so forth.

Whether a processor is connected on a printed circuit board with socket or surface mount technology, the processor may be connected to a respective off-die memory. The off-die memory may include dynamic random access memory (DRAM), a Buffer on Board (BoB) interface chip between the processor and DRAM, and so forth. The off-die memory may be connected to a respective memory controller for the processor. The DRAM may include one or more dual in-line memory module (DIMM) slots. The DRAM may be further connected to lower levels of a memory hierarchy, such as a disk memory and offline archive memory.

Referring to FIG. 1, a generalized block diagram illustrating one embodiment of a computing system 100 is shown. Computing system 100 includes hardware 102 and software 170. The hardware 102 includes nodes 110 a-110 b. Although two nodes are shown in FIG. 1, other embodiments may comprise a different number of nodes. As described above, each one of the nodes 110 a-110 b may include a processor and its respective off-die memory. The processor may be connected to a printed circuit board with socket or surface mount technology. Through the use of coherence links 150-156, each processor within the nodes 110 a-110 b is connected to another one of the processors in the computing system 100 and has access to on-die caches and a respective off-die memory of the other one of the processors.

Memory controllers within the nodes 110 a-110 b may include control circuitry for interfacing to memories. Additionally, the memory controllers may include request queues for queuing memory requests. In one embodiment, the coherency points for addresses within the computing system 100 are the memory controllers within the nodes 110 a-110 b connected to the memory storing bytes corresponding to the addresses. In other embodiments, the cache coherency scheme may be directory based, and the coherency point is the respective directory within each of the nodes 110 a-110 b. The memory controllers may include or be connected to coherence units. In a directory-based cache coherence scheme, the coherence units may store a respective directory. These coherence units are further described later. Additionally, the nodes 110 a-110 b may communicate with input/output (I/O) devices, which may include computer peripheral devices. Alternatively, each one of the nodes 110 a-110 b may communicate with an I/O bridge, which is coupled to an I/O bus.

As shown in FIG. 1, each one of the nodes 110 a-110 b may utilize one or more coherence links for inter-node access of processor on-die caches and off-die memory of another one of the nodes 110 a-110 b. In the embodiment shown, the nodes 110 a-110 b use coherence links 150-156. As used herein, coherence links may also be referred to as simply links. Although four links are shown in FIG. 1, other embodiments may comprise a different number of links. The interconnect technology used in links 150-156 may replace front-side bus communication.

In various embodiments, the links 150-156 include packet-based, bidirectional serial/parallel high-bandwidth, low-latency point-to-point communication. In addition, the interconnect technology uses a cache coherency extension. Examples of the technology include HyperTransport and QuickPath. Other proprietary coherence link technologies may also be selected for use on links 150-156. In other embodiments, the links 150-156 may be unidirectional, but still support a cache coherency extension. In addition, in other embodiments, the links 150-156 may not be packet-based, but use other forms of data transfer.

The hardware 102, which includes the nodes 110 a-110 b, may be connected to software 170. The software 170 may include a hypervisor 172. The hypervisor 172 is used to support a virtualized computing system. The benefits of chip multi-threading (CMT) include allowing several software applications to share a multi-core processor or even a multi-threaded core. A general-purpose operating system (OS) has control of a system's physical resources, such as allocation of the physical resources and management of external storage. Virtual memory and I/O device abstraction support the illusion that each software application controls all physical resources, or even more resources than are physically available.

Virtualization broadly describes the separation of a service request from the underlying physical delivery of that service. A software layer, or virtualization layer, may be added between the hardware and the OS. A software layer may run directly on the hardware without the need of a host OS. This type of software layer is referred to as a hypervisor. Although a hypervisor is a software layer, to be effective this layer may need hardware assistance. The trap handler 173 may include multiple trap subroutines or handlers that execute based on received traps. The subroutines may include one or more threads. The hypervisor 172 may allow for time-sharing a single computer between several single-tasking OSes.

In some embodiments, the software 170 may include a system logic domain manager 174 for controlling the operating states of the processors and other components within the computing system 100. The manager 174 may communicate with a power management unit 178 that includes policies and algorithms for changing operating states for different operating points. The power management unit 178 may send notifications to disable portions of the computing system 100 when it detects or is otherwise informed that the portion is unused for a given period of time. Similarly, power-performance states (P-states) may be adjusted based on compute unit usage feedback.

The node link status controller 175 may send control signals to the nodes 110 a-110 b for performing training of the links 150-156 during system startup and initialization. An electrical section of the physical layer within each of the links 150-156 manages the transmission of digital data in the one or more lanes within a single link. The electrical section drives the appropriate voltage signal levels with the proper timing relative to a clock signal. Additionally, it recovers the data at the other end of the link and converts it back into digital data. The logical section of the physical layer interfaces with the link layer and manages the flow of information back and forth between them. With the aid of the controller 175, it also handles initialization and training of the link.

Each of the nodes 110 a-110 b may monitor the bandwidth utilization across the links 150-156. For example, counters may be used within each of the nodes 110 a-110 b for each of the links 150-156. In various embodiments, monitoring logic within the nodes 110 a-110 b may count a number of clock cycles a given one of the links 150-156 is used to transfer data within a given time duration. A given direction of a link includes one or more lanes of data transfer in a particular direction, such as from node 110 a to node 110 b. A bidirectional link includes two directions, each comprising one or more lanes for data transfer. For bidirectional links, a separate count may be maintained for incoming and outgoing data on a given link. In some embodiments, each node monitors a same direction for each of its bidirectional links. For example, a given node may monitor an outgoing direction for each connected bidirectional link. In other embodiments, a given node may monitor both incoming and outgoing directions of connected bidirectional links. Accordingly, another node connected to the given node may not monitor any directions of the bidirectional links, since the given node has all information regarding utilization of each direction of the bidirectional links between them. In some embodiments, the monitoring logic may compare the count to one or more threshold values at the end of a time period. In other embodiments, the monitoring logic may compare the count to one or more threshold values each time the count is updated. If the monitoring logic determines the count is less than a low threshold, then the given link may be considered to be underutilized. Alternatively, if the monitoring logic determines the count is greater than a high threshold, then the given link may be considered to be over utilized.

An interval counter may be used to define a time period or duration. In some embodiments, an interval counter is paired with an activity counter. The activity counter may count a number of clock cycles a respective link sends data. The interval counter may increment until it reaches a given value, and then resets. When the interval counter reaches the given value, the count value within the activity counter may be compared to the high and low threshold values. Alternatively, the count value may be saved and then compared. Afterward, the activity counter may also be reset and begin counting again. The time duration and threshold values may be stored in a configuration file within the data 176. These values may be programmable.

If a given link of the links 150-156 in a given set is found to be underutilized, the monitoring logic within the nodes 110 a-110 b may generate a trap. The terms “set” and “set of links” are used as described earlier. The trap may indicate the given link in the given set is underutilized. In one embodiment, the traps are potentially generated at the end of the timing interval set by the interval counter. The trap handler 173 within the hypervisor 172 may handle the trap. Control logic within the trap handler 173 may determine whether any link of the links 150-156 in the given set is over utilized. If this condition is satisfied, then no link may be turned off. However, if no other link in the given set is over utilized while the given link is underutilized, then any link in the set may be turned off. Additional conditions may be used to determine when to turn off the link. For example, to avoid frequent oscillation between turning on and off a same link, other conditions based on past behavior may be used to qualify enabling and disabling the link.

The hypervisor 172 receives the generated trap and a respective subroutine within the trap handler 173 may be selected. In one embodiment, the selected subroutine accesses control and status registers within the link interfaces of the nodes 110 a-110 b. The subroutine may write one or more values stored in these registers to a given location within shared memory. Alternatively, the subroutine may perform computations on the stored values associated with the links 150-156 and write the results to the given shared memory location. In one embodiment, the status and count values and/or computation results are written to the shared memory location when a trap associated with the links 150-156 is generated. If the subroutine determines each of the other enabled links within links 150-156 does not have a status of being over utilized, then steps may be taken to turn off a link. Turning off the link may reduce power consumption within the computing system 100. Further details are provided below.

Referring now to FIG. 2, a generalized flow diagram of one embodiment of a method 200 for monitoring bandwidth utilization on coherence links in a multi-node system is illustrated. The components embodied in the computing system described above may generally operate in accordance with method 200. For purposes of discussion, the steps in this embodiment are shown in sequential order. However, some steps may occur in a different order than shown, some steps may be performed concurrently, some steps may be combined with other steps, and some steps may be absent in another embodiment.

In block 202, program instructions are processed in a multi-node system. A processor and its respective off-die memory may be referred to as a node. A processor within a given node may have access to a most recently updated copy of data in the on-die caches and off-die memory of other nodes through one or more coherence links. Placement of the processors within the nodes may use socket, surface mount, or other technology. The program instructions may correspond to one or more software applications. During processing, each node within the system may access data located in on-die caches and off-die memory of other nodes in the system. Coherence links may be used for the data transfer. In some embodiments, the coherence links are packet-based. In block 204, each node may schedule packets to coherence links based at least on packet type. If multiple links within a node may be used, a round robin or other arbitration algorithm may be used to assign packets to links.

In block 206, each node may monitor bandwidth utilization of each associated coherence link. For example, a coherence unit within an interface to another node may include logic for monitoring. In some embodiments, counters and comparators may be used as described earlier. In some embodiments, each node monitors a same direction for each of its links. For example, each node may monitor an outgoing data transfer direction for each connected link. In other embodiments, a given node may monitor both incoming and outgoing data transfer directions of connected links. Accordingly, another node connected to the given node may not monitor any directions of links, since the given node has all information regarding utilization of each direction of links between them. In various embodiments, a check for high utilization has higher priority than a check for low utilization, although the monitoring is used for reducing power consumption. This priority scheme prevents turning off a link in a given set when other links in the given set still have high bandwidth utilization. Turning off a link under these conditions may further congest the already congested links.

If monitoring logic within a node for a given set determines a first link in the given set is over utilized (conditional block 208) then in block 210, an indication of high utilization may be sent. In one embodiment, the node that measured the high utilization generates a trap. The generated trap may be sent to the hypervisor for trap handling. The trap handling steps may turn on one of the disabled links in order to alleviate the high utilization of the first link. Further details are provided shortly.

If monitoring logic within a node for a given set determines a second link in the given set is underutilized (conditional block 212), then in block 214, an indication of low utilization may be sent. Similar to the indication of high utilization, the node that measured the low utilization generates a trap. The generated trap may be sent to the hypervisor for trap handling. The trap handling steps may turn off a link in order to reduce power consumption. Further details are provided shortly. In other embodiments, more qualifying conditions may be satisfied prior to generating traps based on high and low utilization of links. More hardware control logic may be added to the monitoring logic within the nodes to check these conditions. Alternatively, software may be used to check additional conditions as further described below.

Referring now to FIG. 3, a generalized flow diagram of one embodiment of a method 300 for turning on and off links based on at least link bandwidth utilization is illustrated. The components embodied in the computing system described above may generally operate in accordance with method 300. For purposes of discussion, the steps in this embodiment are shown in sequential order. However, some steps may occur in a different order than shown, some steps may be performed concurrently, some steps may be combined with other steps, and some steps may be absent in another embodiment.

In block 302, an indication of low or high utilization of a given coherence link in a given set in a multi-node system is received. In various embodiments, a hypervisor receives the indication as a generated trap from a node in the system. A corresponding trap handler may be selected and executed. In block 303, an indication of low or high utilization for the given link is stored. In some embodiments, the indication is stored in a given memory location in shared memory. If the indication is for high utilization (conditional block 304) and another link in a same given set as the given link is disabled (conditional block 305), then in block 306, a disabled link in the given set is selected. In some embodiments, it may be known that at least one link is disabled between the same 2 nodes, since this condition may be included as one of the qualifying conditions for the high utilization trap. Additional hardware logic may be added to the monitoring logic within the link interfaces of nodes to check more conditions prior to generating traps.

It is noted that either hardware or software may check for other conditions to be satisfied when determining whether to enable and disable links. For example, a given link may be used for a given packet type. The given link may be turned off. Later, a respective queue for incoming packets may fill as an application that uses the given packet type begins execution. The given link may be the only link between the same 2 nodes as the given link capable of handling the given packet type. Therefore, the given link may be turned on despite its bandwidth utilization being low, or zero.

In block 308, the corresponding trap handler sends a notification and steps to each of the 2 nodes for turning on the selected link that is currently disabled. In block 310, the corresponding trap handler sends a notification to each of the 2 nodes to add the selected link to being considered for being scheduled to receive data for transfer. The scheduling logic may include routing tables and combinatorial logic following steps of a chosen algorithm for scheduling data to links. In some embodiments, a separate notification is not sent from the trap handler, since the hardware control logic within the node may perform the addition of the turned-on link to being considered for being scheduled to receive data for transfer at the completion of startup training. In other embodiments, an indication of completion of the startup training may be sent from the node link status controller 175, rather than the trap handler, to a corresponding one of the nodes.

If the indication sent from a node to the hypervisor is not for high utilization (conditional block 304), then the indication is for low utilization. If another link in the given set has a corresponding stored indication of high utilization (conditional block 314), then the processing of the trap may complete in block 316. No links in the given set may be turned off at this time. In other embodiments, the trap handler may investigate whether the other links in the given set have an indication of low utilization, rather than have an indication of high utilization. If this condition is satisfied, then a link may be turned off.

If no other link in the given set has an indication of high utilization (conditional block 314), then in block 318, a notification may be sent from the trap handler to each of the 2 nodes to remove any one enabled link from consideration for being scheduled to receive data for transfer. In block 320, a notification and steps for turning off the any one enabled link may be sent from the trap handler to each of the 2 nodes. Alternatively, the steps for tuning off the any one enabled link may be sent from the node link status controller 175, rather than the trap handler, to each of the 2 nodes. In some embodiments, the hardware control logic within a node does not begin the received steps until each outstanding transaction still stored for the any one enabled link has completed. In other embodiments, the trap handler or the node link status controller 175 does not send the steps until notification is received from a node that each outstanding transaction still stored for the any one enabled link has completed.

Turning now to FIG. 4, a generalized block diagram of another embodiment of a computing system 400 is shown. Circuit components described earlier are numbered identically. Computing system 400 includes software 170 and hardware 402. The hardware 402 includes nodes 110 a-110 d. Although four nodes are shown in FIG. 4, other embodiments may include a different number of nodes. In some embodiments, the nodes 110 a-110 d are located on a single printed circuit board. In other embodiments, each one of the nodes 110 a-110 d is located on a respective single printed circuit board. In yet other embodiments, two of the four nodes 110 a-110 d are located on a first printed circuit board and the other two nodes are located on a second printed circuit board. Multiple printed circuit boards may be connected for communication by a back plane.

Systems with chip multi-threading (CMT) use an appreciable amount of memory bandwidth. The dedicated cache coherence links in a multi-socket system provide near-linear scaling of performance with thread count. The dedicated cache coherence links 180 a-180 f, 182 a-182 d, and 184 a-184 b provide communication separate from other communication channels such as a front side bus protocol, a chipset component protocol, and so forth. As shown, the multi-node computing system 400 is expanded in a “glueless” configuration that does not use an application specific integrated circuit (IC) hub or a full custom IC hub for routing. Alternatively, the multi-node computing system 400 may be expanded with the use of a hub, especially when the number of sockets reaches an appreciable value and development costs account for the extra hardware and logic.

As shown, each one of the nodes 110 a-110 d may utilize one or more coherence links for inter-node access of processor on-die caches and off-die memory of another one of the nodes 110 a-110 d. In the embodiment shown, the nodes 110 a-110 d use coherence links 180 a-180 f, 182 a-182 d, and 184 a-184 b. Although two links are used between any two nodes in FIG. 4, other embodiments may comprise a different number of links between any two nodes. In addition, although the links 180 a-180 f, 182 a-182 d, and 184 a-184 b are shown as bidirectional links, in other embodiments, one or more links may be unidirectional. The links 180 a-180 f, 182 a-182 d, and 184 a-184 b may be packet-based. Alternatively, the 180 a-180 f, 182 a-182 d, and 184 a-184 b may use other data transfer mechanisms.

The hardware in the nodes 110 a-110 d may be connected to software 170. The steps described earlier regarding turning on and off links based on bandwidth utilization may be used in the computing system 400. In various embodiments, the control logic within the hardware and software may not allow a link to be turned off if the link is the last enabled link in a respective set of links. In other embodiments, the control logic may allow the last enabled link in the respective set of links to be turned off. However, a performance penalty may be associated with this embodiment, since initial packets to be transferred between the two nodes now wait for startup training to complete prior to actually being transferred.

Referring now to FIG. 5, a generalized block diagram of one embodiment of an exemplary node 500 is shown. Node 500 may include memory controller 540, input/output (I/O) interface logic 550, interface logic 530, and one or more processor cores 502 a-502 d and corresponding cache memory subsystems 504 a-504 d. In addition, node 500 may include a crossbar switch 506 and a shared cache memory subsystem 508. In one embodiment, the illustrated functionality of processing node 500 is incorporated upon a single integrated circuit.

In one embodiment, each of the processor cores 502 a-502 d includes circuitry for executing instructions according to a given general-purpose instruction set. For example, the SPARC® instruction set architecture (ISA) may be selected. Alternatively, the x86, x86-64®, Alpha®, PowerPC®, MIPS®, PA-RISC®, or any other instruction set architecture may be selected.

Each of the processor cores 502 a-502 d may include a superscalar microarchitecture with one or more multi-stage pipelines. Also, each core may be designed to execute multiple threads. A multi-thread software application may have each of its software threads scheduled to be executed on a separate pipeline within a core, or alternatively, a pipeline may process multiple threads via control at certain function units.

Generally, each of the processor cores 502 a-502 d accesses an on-die level-one (L1) cache within a cache memory subsystem for data and instructions. There may be multiple on-die levels (L2, L3 and so forth) of caches. In some embodiments, the processor cores 502 a-502 d share a cache memory subsystem 508. If a requested block is not found in the caches, then a read request for the missing block may be generated and transmitted to the memory controller 540. Interfaces between the different levels of caches may comprise any suitable technology.

The interface logic 530 may generate control and response packets in response to transactions sourced from processor cores and cache memory subsystems located both within the processing node 500 and in other nodes. The interface logic 530 may include logic to receive packets and synchronize the packets to an internal clock. The interface logic may include coherence units 510 a-510 b. Although two coherence units are shown in FIG. 5, other embodiments may include a different number of coherence units. The coherence units 510 a-510 b may perform cache coherency actions for packets accessing memory according to a given protocol. The coherence units 510 a-510 b may include a directory for a directory-based coherency protocol. Additionally, the coherence units 510 a-510 b may include utilization monitors 512 a-512 b. These monitors may track the bandwidth use on the links 520 a-520 b. In some embodiments, counters and comparators may be used as described earlier.

In various embodiments, the coherence units 510 a-510 b are located outside of the memory controller 540 as shown. In other embodiments, the logic and functionality within the interface logic 530 may be incorporated in the memory controller 540. When low or high utilization is detected and other qualifying conditions are satisfied, the monitors 512 a-512 b may generate traps 522 a-522 b and send the traps to a hypervisor. The hypervisor may select an associated handler or subroutine to determine whether to turn on or off particular links based on at least information associated with the received traps. The subroutine may send appropriate steps to the associated nodes for enabling and disabling links.

In some embodiments, the interface logic 530 may determine under and over utilization of links in a given set by an amount or an input rate of incoming data traffic from the processor cores and corresponding caches. The interface logic 530 may monitor this incoming traffic and make determinations for generating traps based on the incoming traffic. Alternatively, the interface logic may monitor queues for the links 520 a-520 b and determine under and over utilization of links in a given set by an amount the queues are filled. The generation of traps may be based on the percentage of the queue capacities that are filled.

It is noted that the above-described embodiments may comprise software. In such an embodiment, the program instructions that implement the methods and/or mechanisms may be conveyed or stored on a computer readable medium. Numerous types of media which are configured to store program instructions are available and include hard disks, floppy disks, CD-ROM, DVD, flash memory, Programmable ROMs (PROM), random access memory (RAM), and various other forms of volatile or non-volatile storage.

Although the embodiments above have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications. 

What is claimed is:
 1. A computing system comprising: control logic; and a plurality of nodes; wherein each of a first node and a second node of the plurality of nodes is configured to send an indication of low utilization for a first link in a set of links between them to the control logic, in response to determining the first link is underutilized; and wherein the control logic is configured to send a notification for turning off any one enabled link in the set to each of the first node and the second node in response to determining a first set of qualifying conditions is satisfied.
 2. The computing system as recited in claim 1, wherein in response to receiving from the control logic a corresponding notification of disabling the first link, each of the first node and the second node is further configured to: remove the first link from consideration for being scheduled to receive packets; and turn off the first link, in response to detecting no more transactions are scheduled for the first link.
 3. The computing system as recited in claim 2, wherein the first set of conditions comprises: receiving the indication of low utilization for the first link from at least one of the first node and the second node; and determining no other link in the set of links is over utilized.
 4. The computing system as recited in claim 2, wherein determining the first link is underutilized comprises: counting a number of clock cycles the first link is used to transfer data within a given time duration; determining the number is less than a low threshold.
 5. The computing system as recited in claim 4, wherein each of the low threshold and the time duration is programmable.
 6. The computing system as recited in claim 2, wherein each of the first node and the second node of the plurality of nodes is configured to send an indication of high utilization for a second link in the set of links to the control logic in response to determining the second link is over utilized.
 7. The computing system as recited in claim 6, wherein the control logic is further configured to send a notification for turning on any one disabled link in the set of links to each of the first node and the second node in response to determining a second set of qualifying conditions is satisfied.
 8. The computing system as recited in claim 7, wherein in response to receiving corresponding notification of enabling the any one disabled link from the control logic, each of the first node and the second node is further configured to: turn on the any one disabled link; and add the turned on any one link for consideration for being scheduled to receive data for transfer, in response to determining the turned on any one link has completed startup training.
 9. The computing system as recited in claim 7, wherein the second set of conditions comprises: receiving the indication of high utilization for the second link from at least one of the first node and the second node; and determining the any one disabled link is handles packet types causing the high utilization.
 10. A method to be used in a computing system, the method comprising: sending to control logic an indication of low utilization for a first link of a plurality of coherence links in a set of links between a first node and a second node of a plurality of nodes, in response to determining the first link is underutilized; and sending a notification from the control logic for turning off any one enabled link in the set to each of the first node and the second node in response to determining a first set of qualifying conditions is satisfied.
 11. The method as recited in claim 10, wherein in response to receiving at each of the first node and the second node from the control logic corresponding notification of disabling the first link, the method further comprises: removing the first link from consideration for being scheduled to receive packets; and turning off the first link, in response to detecting no more transactions are scheduled for the first link.
 12. The method as recited in claim 11, wherein the first set of conditions comprises: receiving the indication of low utilization for the first link from at least one of the first node and the second node; and determining no other link in the set of links is over utilized.
 13. The method as recited in claim 11, further comprising sending to control logic an indication of high utilization for a second link in the set of links, in response to determining the second link is over utilized.
 14. The method as recited in claim 13, further comprising sending from the control logic to each of the first node and the second node a notification for turning on any one disabled link in the set of links, in response to determining a second set of qualifying conditions is satisfied.
 15. The method as recited in claim 14, wherein in response to receiving at each of the first node and the second node from the control logic corresponding notification of enabling the any one disabled link, the method further comprises: turning on the any one disabled link; and adding the turned on any one link for consideration for being scheduled to receive data for transfer, in response to determining the turned on any one link has completed startup training.
 16. The method as recited in claim 14, wherein the second set of conditions comprises: receiving the indication of high utilization for the second link from at least one of the first node and the second node; and determining the any one disabled link handles packet types causing the high utilization.
 17. A non-transitory computer readable storage medium storing program instructions operable to reduce power consumption during data transport across multiple nodes, wherein the program instructions are executable by a processor to: send to control logic an indication of low utilization for a first link of a plurality of coherence links in a set of links between a first node and a second node of a plurality of nodes, in response to determining the first link is underutilized; and send a notification from the control logic for turning off any one enabled link in the set to each of the first node and the second node in response to determining a first set of qualifying conditions is satisfied.
 18. The storage medium as recited in claim 17, wherein in response to receiving at each of the first node and the second node from the control logic corresponding notification of disabling the first link, the program instructions are further executable to: remove the first link from consideration for being scheduled to receive packets; and turn off the first link, in response to detecting no more transactions are scheduled for the first link.
 19. The storage medium as recited in claim 18, wherein the first set of conditions comprises: receiving the indication of low utilization for the first link from at least one of the first node and the second node; and determining no other link in the set of links is over utilized.
 20. The storage medium as recited in claim 18, the program instructions are further executable to send to control logic an indication of high utilization for a second link in the set of links, in response to determining the second link is over utilized. 